1. Field of the Invention
The invention is related to the field of communication systems, and in particular, to a link layer controller that indicates the available space in link layer memory to a network layer system.
2. Statement of the Problem
Communication devices include systems that operate at different layers of the Open Systems Interconnection (OSI) protocol reference model. A communication device typically includes a network layer, a link layer, and a physical layer. The link layer includes a link layer controller and a link layer memory. The link layer memory has transmit buffers that correspond to transmit channels.
To transmit packets from the communication device, the network layer transfers packets in a transmit channel to the link layer controller. The link layer controller transfers the packets to the corresponding transmit buffer in the link layer memory. Subsequently, the link layer controller transfers the packets from the transmit buffer in the link layer memory to the physical layer. The physical layer transfers the packets over the corresponding channel in a communication path coupled to the communication device.
The link layer memory provides a time-buffer between the different transfer rates of the network layer and the physical layer. The network layer attempts to keep the link layer memory loaded with the proper level of packet data. If the network layer transfers too much packet data to the link layer memory, then the link layer memory overflows, and some packet data is lost. This is an over-run condition that causes the link layer controller to request a re-transmission of the lost packet data. Over-runs slow down communication device data transfer and may cause errors. If the network layer transfers too little packet data to the link layer memory, then the link layer memory empties, and no packet data is transferred from the communication device. This is an under-run condition that slows down communication device data transfer. Both over-runs and under-runs are undesirable.
To prevent over-runs and under-runs, the link layer memory must be sized appropriately. Typically, this has required over-sizing the link layer memory. The extra size adds cost and complexity to the link layer system. Unfortunately, the over-sized link layer memory also leads to increased under-runs. Network operators must tolerate link layer controllers that experience inefficient over-runs and under-runs.